package com.ht.modules.ai.app.service.impl;

import com.ht.modules.authentication.utils.AesUtil;
import com.ht.utils.DicConstants;
import com.ht.modules.ai.app.entity.AppInfo;
import com.ht.modules.ai.app.entity.AppInfoVo;
import com.ht.modules.ai.app.mapper.AppInfoMapper;
import com.ht.modules.ai.app.service.IAppInfoService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.logging.log4j.util.Strings;

import java.util.List;

/**
 * 应用信息
 */
@Service
public class AppInfoServiceImpl extends ServiceImpl<AppInfoMapper, AppInfo> implements IAppInfoService {

    @Autowired
    private AppInfoMapper appInfoMapper;

    /**
     * 分页列表查询
     *
     * @param appInfoVo 参数
     * @param page      分页对象
     * @param column    默认排序列
     * @param order     默认排序方式
     * @return 分页列表
     */
    @Override
    public Page<AppInfoVo> list(Page<AppInfoVo> page, AppInfoVo appInfoVo, String column, String order) {
        return page.setRecords(appInfoMapper.list(page, appInfoVo, column, order));
    }

    /**
     * 不分页列表查询
     *
     * @param appInfoVo 参数
     * @param column    默认排序列
     * @param order     默认排序方式
     * @return 不分页列表
     */
    @Override
    public List<AppInfoVo> listNoPage(AppInfoVo appInfoVo, String column, String order) {
        return appInfoMapper.list(null, appInfoVo, column, order);
    }

    /**
     * 添加
     *
     * @param appInfo 参数
     */
    @Override
    public void add(AppInfo appInfo) {
        String key = AesUtil.getKey();
        appInfo.setAccessKey(key);
        this.save(appInfo);
    }

    /**
     * 编辑
     *
     * @param appInfo 参数
     */
    @Override
    public void edit(AppInfo appInfo) {
        AppInfo appInfoEntity = this.getById(appInfo.getId());
        if (null == appInfoEntity) {
            throw new RuntimeException("未找到对应实体！");
        }
        this.updateById(appInfo);
    }

    /**
     * 通过id删除（逻辑删除）
     *
     * @param id 参数
     */
    @Override
    public void delete(Integer id) {
        AppInfo appInfo = this.getById(id);
        if (null == appInfo) {
            throw new RuntimeException("未找到对应实体！");
        }
        this.updateById(appInfo);
    }

    /**
     * 批量删除（逻辑删除）
     *
     * @param ids 参数
     */
    @Override
    public void deleteBatch(String ids) {
        if (Strings.isBlank(ids)) {
            throw new RuntimeException("参数不识别！");
        }
        appInfoMapper.updateBatchByIds("del_flag", DicConstants.DEL_FLAG_YSC, ids.split(","));
    }

    /**
     * 通过id查询
     *
     * @param id 参数
     * @return 查询结果
     */
    @Override
    public AppInfo queryById(Integer id) {
        AppInfo appInfo = this.getById(id);
        if (null == appInfo) {
            throw new RuntimeException("未找到对应实体！");
        }
        return appInfo;
    }

    /**
     * 通过id查询Vo
     *
     * @param id 参数
     * @return 查询结果
     */
    @Override
    public AppInfoVo queryVoById(Integer id) {
        AppInfoVo appInfoVo = appInfoMapper.getVoById(id);
        if (null == appInfoVo) {
            throw new RuntimeException("未找到对应实体！");
        }
        return appInfoVo;
    }

    /**
     * 通过excel导入数据
     *
     * @param importList 参数
     */
    @Override
    public void importExcel(List<AppInfo> importList) {
        if (importList.isEmpty()) {
            return;
        }
        this.saveBatch(importList);
    }

}
